Computer systems, particularly graphically-based computer systems, employ various mechanisms to display information to a user and to prompt and allow a user to provide information or modify settings before executing a command or otherwise receive input from the user. Typically, such mechanisms are called "dialog windows", "dialog boxes" or simply "dialogs." Herein, the term dialog will be used to generally denote any of the above and to encompass any screen display having one or more editable or static user interface items or controls. A dialog can display information to the user, allow the user to change information and allow the user to enter additional information. A dialog may occupy an entire screen display or a portion, thereof, e.g. a window. Typically, software programs create and operate dialogs using interfaces with the underlying operating system of the computer system on which they are executing. The operating system generally creates and manages the dialogs in response to requests from the software program and input from the user.
Generally, a dialog can contain one or more items with which the user can type text, choose options, or direct the action of a particular command. An item can be either editable or non-editable. A non-editable item is either an item which is static in that it cannot be altered by a user or an item which is editable by a user but which is directly controlled by a software program other than the underlying operating system or other software program responsible for creating and managing the dialog.
In the latter case, a non-editable item may in actuality be user-editable, but the user's input is directed to the software program rather than the underlying operating system. Thus, from the operating system's perspective it is unknown whether such an item is editable or non-editable. From the software program's perspective, however, such an item is user-editable and the software program responds directly to the user's input. For information on how a software program creates such non-editable or software program-controlled items, see "Inside Macintosh", Vol. 1, Chapter 13, Addison-Wesley Publishing Company, Inc., 1985, herein incorporated by reference.
An editable item allows a user to edit/change the contents and/or state of the item. For example, with reference to the print dialog 20 shown in FIG. 1A, radio button 22a is an editable item, while the Printer Effects static text 22c is typically a non-editable item. Examples of various types of items include, but are not limited to buttons, check boxes, static and editable text, pictures and icons, as shown in FIG. 1A and further illustrated in FIG. 1B. The above-listed items are predefined items. In some systems an applications developer also can create user-defined or customized items.
If a user clicks on button 23, the options specified in the dialog 20 are used when printing a document. The term "click" is defined to include the act of the user placing the cursor over the button and selecting the button, e.g. depressing a button on the mouse or pressing a RETURN key on a keyboard. Dialog 20 also contains 4 check boxes, all of which have associated static text. For example, check box 22d has static text "Font Substitution?" associated with it. In some implementations the check box and the associated text are considered a single item, i.e. the term "check box" is used to cover the input box and the static text. In other implementations the check box and the associated text may be considered separate items. The same applies for radio buttons and the text associated therewith. While the dialog is active on a screen, a user can click on the checkbox, thereby toggling the check box between chosen and unchosen states.
Many operating systems or computer software programs have a Dialog Manager that manages or oversees the use of dialogs. The Dialog Manager reads a description of the dialog and the items inside the dialog and then draws the dialog and processes user actions that affect the dialog. The Dialog Manager's duties include manipulating items in a dialog box, including but not limited to, drawing an item, erasing an item, changing the appearance of an item and overseeing the handling of any event which affects the item.
Dialogs generally contain multiple items. Some computer systems provide for navigation among the editable items so that a user's focus can be transferred among the editable items in the dialog window. Generally, when the focus is on a particular item in the dialog box that item is active and capable of receiving user input. The focus is typically transferred by a user via an input device such as a mouse, keyboard, pen, speech recognition device, etc. . . For example, in a computer system having a dialog which is keyboard navigable, the focus is typically transferred among the items in the dialog window in response to a user pressing a particular key on the keyboard, e.g. the tab key, and the user's keystrokes are applied to the currently focused item. The term "full keyboard navigation", as well as derivatives thereof, is used to denote a system in which there is navigation among items known by the system to be editable.
Using a pointing device such as a mouse or pen a user can specifically and arbitrarily direct the change in focus from a first item to a second item, the first and second items not necessarily being contiguous in location or otherwise related. With a keyboard, however, a user is generally limited to navigating through the items in a particular pre-determined order. This navigation ordering is referred to herein as the "focus ordering" of the items in the dialog. Generally, the focus ordering of editable items in a dialog of a particular software program is predetermined by the developer of the software program. For example, where a user tabs through the items in a dialog, pressing tab while the focus is on a first item will shift the focus to a second predetermined item.
For example with reference again to FIG. 1A, if item 22b follows item 22a in the focus ordering for the dialog 20, then changing the focus ordering in a sequential manner, e.g. via an TAB key on a keyboard device, when item 22a is the focus will shift the focus to item 22b. As the focus, item 22b is then capable of receiving input from the input device.
Generally, the developer of a software program determines the focus ordering of the items in a dialog box and then uses the Application Program's Interface ("API") of the underlying operating system to specify that focus ordering. For example, a developer of a software program written for the Windows, version 3.1 operating system environment, available from Microsoft Corporation, uses the CreateDialog or DialogBox functions to create dialogs. These functions are described in the "Microsoft Windows 3.1 Programmer's Reference", Vol. 1, pages 50-53, Microsoft Press, 1987-1992, the disclosure of which is herein incorporated by reference. In Windows 3.1 items in a dialog box are referred to as "controls". For the purposes of the following description on Windows 3.1 only, the term control is used herein to refer to items in dialog boxes on Microsoft Windows 3.1.
In Windows 3.1, a dialog is described by a dialog box template, an application resource, is a description of the dialog box which includes information such as the height and width, the type of border and the style of the dialog box, as well as the controls contained therein. After loading a dialog box template from the application's executable file into memory, these functions then create a pop-up window that matches the template's specifications, using the information in the template to create the dialog box, position it, and create and position the controls for the dialog box.
In Windows 3.1, a control can have one or more associated styles which generally describe attributes pertinent to that control, including the manner in which the input focus is shifted to the control. The WS.sub.-- TABSTOP style specifies that a user can shift the input focus to particular control by pressing the TAB key or SHIFT+TAB keys. Typically, every control in the dialog box has this style, so that a user can shift the input focus from one control to the other. If two or more controls are in the dialog box, the TAB key shifts the input focus to the controls in the order in which they were created. The SHIFT+TAB keys shift the input focus in reverse order.
The WS.sub.-- GROUP style specifies that a use a can move the input focus within a group of controls by using the arrow keys. The DOWN ARROW and RIGHT ARROW keys move the input focus to controls in the order in which they have been created. The UP ARROW AND LEFT ARROW keys move the input focus in reverse order.
In the System 7.5 operating system from Apple Computer, keyboard navigation is provided for editable text items. The focus order of the keyboard navigation for those editable text items is the order in which the items are created in the dialog.
Thus, in general, in the above-referenced systems, the focus ordering of items in a particular dialog box is determined by the order in which such items were created.
In RESEDIT, a resource editor available from Apple Computer, graphic resources such as icons, menus and dialogs can be created. A description of RESEDIT can be found in ResEdit Reference For ResEdit 2.1, Addison-Wesley Publishing Company, Inc., 1991, the disclosure of which is herein incorporated by reference. A dialog is described by a "DLOG" resource, which references a dialog item list, called a "DITL" resource. Items can be reordered once the dialog is created, but the changes must be done statically before runtime of the software program containing the dialog.
In these systems, the focus ordering is based on the creation order of the controls. Thus, in designing a dialog, a developer may spend time and other resources determining a creation ordering of the controls which also makes sense from a focus ordering standpoint. If a developer does not take into account focus ordering when creating a dialog, the focus ordering that results may be illogical and confusing to a user.
Moreover, variations in the focus ordering schemes and philosophies of different developers may result in inconsistent focus ordering among dialog windows in a particular software program, as well as inconsistencies across software programs in a computer system. These inconsistencies in focus ordering can create confusion and unpredictability for a user.
For example, a first developer may design the focus ordering with a left-right orientation so that the focus is transferred from items in a left-to-right manner, while a second developer may design the focus ordering with a top-bottom orientation so that the focus is transferred from items in a top-to-bottom manner. Thus, a user may become confused as to whether a particular dialog window has a focus ordering which is left-to-right or top-to-bottom.
Other problems can arise when a dialog window which was created without keyboard navigation capabilities is transferred, e.g. ported, to a computer system which provides keyboard navigation capabilities for dialog windows. In this case, a focus ordering may not even have been defined by the developer of the dialog window.
For example, a developer creating a dialog window for a software program to be used in a computer system which does not provide full keyboard navigation of dialogs probably will not design a focus ordering for the items in the dialog window. If the software program is ported to a computer system that does support keyboard navigation for dialog windows, then a focus ordering is needed to navigate through the items using the keyboard. In that situation, it is desirable to have a mechanism for automatically defining a focus ordering which is logical given the items in the dialog window.